/*
 * @Author: 谢陈洁
 * @Date: 2025-05-26 08:55:48
 * @LastEditors: 谢陈洁
 * @LastEditTime: 2025-07-23 17:02:22
 * @Description: file content
 */
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
// import IconsResolver from 'unplugin-icons/resolver'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
// import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
// import path from 'path'
import Icons from 'unplugin-icons/vite'
import { viteMockServe } from 'vite-plugin-mock'
import { visualizer } from 'rollup-plugin-visualizer' // 打包分析
// import type { ConfigEnv } from 'vite'
// const command = process.env.npm_lifecycle_event // vite serve or vite build
// 获取当前命令，判断是 serve 还是 build
// console.log(command)
export const autoImportPlugin = AutoImport({
  resolvers: [
    ElementPlusResolver(), // 配置 Element Plus 组件自动导入
    // IconsResolver({
    //   prefix: 'Icon', // 配置图标前缀
    //   // 这里可以配置图标的前缀，默认是 'Icon'，可以根据需要修改
    //   componentPrefix: 'Icon', // 图标组件前缀
    //   enabledCollections: ['ep'],
    //   alias: {
    //     ep: 'ep' // 确保集合别名正确
    //   }
    // }) // 配置 IconsResolver
  ],
  imports: ['vue', 'vue-router'], // 配置需要自动导入的模块
  dts: 'types/auto-imports.d.ts' // 配置自动导入的声明文件路径
})


export const componentsPlugin = Components({
  dirs: ['src/components'], // 配置需要自动导入的组件路径
  resolvers: [
    ElementPlusResolver(),
    {
      type: 'component',
      resolve: (name) => {
        // 自定义动态组件解析逻辑
        if(name.startsWith('el-')) {
          return { name: name, from: 'element-plus' }
        }
      }
    },
    // IconsResolver({
    //   prefix: 'Icon',
    //   enabledCollections: ['ep', 'carbon', 'mdi', 'ionicons', 'logos', 'ri', 'twemoji', 'ph'],
    //   componentPrefix: 'Icon' // 图标组件前缀
    // }),
    // (componentName: string) => {
    //   if (componentName.startsWith('Icon')) {
    //     return { name: componentName, from: 'unplugin-icons/vue' } // 确保图标组件从 unplugin-icons/vue 导入
    //   }
    // }
  ], // 配置 Element Plus 组件自动导入
  dts: 'types/components.d.ts' // 配置自动导入组件的声明文件路径
})

export const iconsPlugin = Icons({
  autoInstall: true, // 配置自动安装依赖
  compiler: 'vue3' // 配置 Icons 的编译器
})

// export const svgPlugin = createSvgIconsPlugin({
//   iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
//   symbolId: 'icon-[dir]-[name]' // 配置 SVG 图标的 ID 格式
//   // inject: 'body-last', // 将 SVG 图标注入到 body 的最后
// })

export const mockPlugin = viteMockServe({
  mockPath: 'mock', // 指定 mock 文件夹路径
  enable: true // 开发环境启用 mock
})

const plugins = [autoImportPlugin, componentsPlugin, iconsPlugin, visualizer()]

export default plugins
